home *** CD-ROM | disk | FTP | other *** search
/ Commodore Free 26 / Commodore_Free_Issue_26_2009_Commodore_Computer_Club.d64 / in the beginning < prev    next >
Text File  |  2023-02-26  |  11KB  |  358 lines

  1. u
  2.          In the Beginning 11
  3.                part one
  4.          --------------------
  5.       By Lord Ronin from Q-Link
  6.  
  7.  Having gone through how we make more
  8. than a one sprite active, there is a
  9. bit more to it than we have covered
  10. last session. We will move ahead to
  11. some vague things for me, then back to
  12. multiple sprites. As well as fixing
  13. the problem of our sprite not going
  14. all the way across the screen.
  15.  
  16.  Down to line #12 from our programme.
  17. The line Says poke 2042,13. Right we
  18. know poke is put something into the
  19. computer. 2042 is a location. Looking
  20. back at that chart, the one that goes
  21. from 2040 to 2047, for the 8 sprite
  22. memory locations. We can see that 2042
  23. is the number for sprite #2. That part
  24. is pretty easy, I lose it at the next
  25. part. That ,13 part. The manual says
  26. "13th area of memory." and continues
  27. with the information that a sprite
  28. takes up 63 sections of memory. Said
  29. just about that way. Yeah I get lost
  30. here. OK it helps a little bit with
  31. the following. As they talk about
  32. doing all of that three series adding
  33. up stuff to make the data for the
  34. sprite. 21 rows, three series each row
  35. is 63. Got that part figured out.
  36. What's next is that each one of those
  37. series. I mean the 128 64 32 16 8 4 2
  38. 1 series on each row is 1 byte of
  39. computer memory. therefore each row is
  40. 3 bytes of computer memory. So an
  41. entire sprite is 63 bytes of computer
  42. memory. Impressive that we can do so
  43. much with so little space.
  44.  
  45.  line 20, we have a for and next loop,
  46. In that we have 0-62, remember 0
  47. starts so there is really 63 units.,
  48. hmmm that is the same number of things
  49. you put in those data statements. 63
  50. for the amount of numbers inserted in
  51. the data statement, 63 for the bytes
  52. of memory used for a sprite. Here too
  53. we have the read q part. Read is the
  54. command to go look at the data. Going
  55. out on a limb here in my
  56. understanding. Q then would be a
  57. variable for that information, as the
  58. next part of the like poke 832+n,Q.
  59. Fits as a 63 time around variable that
  60. is read and poked into the memory of
  61. the machine. Again the book says this
  62. loop is poked into the 13th block of
  63. memory. Starting at location 832.
  64. Again I have no idea of this 13th
  65. block and why or how they picked
  66. location 832. Only that it works in
  67. the lessons here.
  68.  
  69.  line 40 we are pokeing v+4,x and at
  70. line 50 we are poking v+5,x. That 4 is
  71. the controller for sprite 2 in the X
  72. co-ordinate. While the 5 is the same
  73. for the same sprite save that it is
  74. the Y coordinate. Doesn't make too
  75. much sense by itself. Remember though
  76. we have line 30 which is the for X = 0
  77. to 200. Add that value of X to both
  78. the +4 and the +5. Then there will be
  79. a replacement across and down the
  80. screen. Making the diagonal movement.
  81. Trick here is that it is moving so
  82. fast, since the data is being read
  83. fast and the computer runs fast. You
  84. see the balloon float diagonally
  85. across the screen, this is the same
  86. sort of trick used for years to make
  87. animation. Show, move, show again,
  88. Just do it so fast the eye doesn't see
  89. the changes.
  90.  
  91.  Well there is a note to look at the
  92. back of the book for the list of the
  93. registers. All 46 are listed with some
  94. very minor explanations to them, that
  95. isn't a part of this series but
  96. personally maybe that is where some of
  97. the raster stuff is done and where the
  98. controls for a light pen can be
  99. accessed. As they are listed in that
  100. area as are several sprite things, and
  101. yes that 23 and 29 part from last
  102. instalment is right for what they do
  103. with a sprite.
  104.  
  105. So each sprite has its own 2 sets of
  106. memory sections to make it and to move
  107. it on the screen. Now they want you to
  108. try the following. Add this line to
  109. the programme...
  110.  
  111. 25 pOv+23,4:pOv+29,4: rem expand
  112.  
  113.  Run the program and your balloon just
  114. got taller and wider by around twice
  115. as much. Right that 23 makes it taller
  116. and the 29 makes it wider, ok and the
  117. 4 is still playing around with the 2nd
  118. sprite. Play a bit with just pokeing
  119. one or the other. But leave one of
  120. them out. See what your balloon looks
  121. like now. <groans are accepted at the
  122. sight> Note too that it still starts
  123. from the same section of the screen.
  124. Next they want you to modify some
  125. lines...
  126.  
  127. 11 pOv+21,12
  128. 12 pO2042,13:pO2043,13
  129. 30 forx=1to190
  130. 45 pOv+6,x
  131. 55 pOv+7,190-x
  132.  
  133.  The extra lines above did some
  134. changes, like line 45 and line 55, you
  135. note that line 11 changed the ,4 to a
  136. ,12. As we talked about earlier this
  137. will mean that sprite 2 and sprite 3
  138. are now activated. Line 12 adds a new
  139. poke command, and that is 2043,13.
  140. Looking back on the charts, the one
  141. for the sprite locations. 2043 is the
  142. number for sprite #3.
  143.  
  144.  Off of that rant for a moment and
  145. back to line 30 there is a change in
  146. the writing of the for part. Instead
  147. of 0 to 200 it is now 1 to 190. Not
  148. sure why this is done. But it works on
  149. the screen.
  150.  
  151.  At line 45 we poke in v+6,x. Line 55
  152. we poke in v+7,190-x. That 6 & 7 must
  153. be or the new sprite. But we have a
  154. reverse of something here. 190-x is
  155. gonna make it do what?
  156.  
  157.  Run the newly modified program and
  158. lets see what happens, what I had was
  159. a cyan big balloon going as it had
  160. before. now a little purple one is
  161. going in sort of the opposite
  162. direction, bottom left corner of the
  163. screen to the top right. OK we have
  164. two sprites moving on the screen at
  165. two sizes in two directions. Time to
  166. complicate things even more.
  167.  
  168. 11 pO v+21,28
  169. 12 pO2042,13:pO2043,13:pO2044,13
  170. 25 pOv+23,12:pOv+29,12
  171. 48 pOv+8,x
  172. 58 pOv+9,100
  173.  
  174. Before you run this one, I'll lay odds
  175. that you can see we have added another
  176. sprite to the mix. You should see that
  177. in line 11 with the higher number, you
  178. will also see that in line 12 there is
  179. a third poke for another sprite
  180. location. This is going to be a
  181. balloon because of that ,13. This is
  182. obtaining the information from the
  183. same location as the other two
  184. sprites. At line 25 we do something a
  185. little different, we poke the
  186. expansion codes into two of the
  187. balloon sprites. Seeing that it is the
  188. same number of 12,that means it is the
  189. 4 and the 8 values, or sprites 2 & 3.
  190. 48 is a similar line, to what we have
  191. seen before, this line controls the
  192. horizontal direction. Line 58 is close
  193. to what we have seen before,
  194. understanding that the 9 will deal
  195. with this sprites vertical movement,
  196. hmm no variable or negative number
  197. here, What happens in this program?
  198.  
  199.  Give it a run, you should see the
  200. balloon as before on the screen,
  201. except that both of those two balloons
  202. are now bigger. The third sprite, is
  203. also another balloon and is coloured
  204. green, this sprite went directly
  205. across the screen as far as it could.
  206. That may be what that line 58 is
  207. supposed to make it do?
  208.  
  209.  "Additional Notes on Sprites" is the
  210. next part of the book, there are
  211. questions, not all of them raised are
  212. covered above.
  213.  
  214.  Starting off is changing the colour
  215. of the sprite, repeating the command
  216. of v=53248 as the way to set the
  217. video. We are told that to change the
  218. colour of our first sprite, or "sprite
  219. 1" to type in pokev+40,13 to make the
  220. sprite a light green, That 40 is the
  221. register code, for sprite #1. The only
  222. problem is, that we haven't turned on
  223. sprite #1 in our program. Next part of
  224. the ,13 is the light green colour, so
  225. for your experiments, a refresher.
  226. 39-46 is for sprite colour 0-7.
  227. Pokeing v+40 is the register number
  228. for the sprite #1. If that was a poke
  229. v+39 it would be for sprite #0. 41 for
  230. sprite #2. 42 = sprite #3, 43 = sprite
  231. # 4, 44 = sprite #5, 45 = sprite #6
  232. and finally 46 = sprite #7.
  233.  
  234.  There are charts that will tell you
  235. the number between 0 and 15 for the
  236. colours, the easiest way to remember
  237. that in this part of programming. We
  238. start at the colours listed on the
  239. keys, though not all models have the
  240. second set of colours listed. Black is
  241. 1 on the keys so remember control and
  242. 1 to change to black for text and the
  243. cursor, as well as in print
  244. statements? Well here we start with 1
  245. on the keys, but in programming we
  246. start at 0. So Black = 0. Light Grey
  247. is the 16th colour. Since we started
  248. at Black as 0 then Light Grey, the
  249. last colour number would be 15, simply
  250. stated; just subtract one from the key
  251. readings, so the white key is number
  252. 2, this would be 1 in the code list,
  253. Cyan is 4 on the key and therefore 3
  254. in the code. Yellow is 8 on the key,
  255. so it is 7 in the code.
  256.  
  257.  Next they tell us that we may have
  258. noticed that the sprite didn't go all
  259. the way to the way to the right hand
  260. side of the screen. Yeah we did see
  261. that one, the reason for this is that
  262. our value for that specific register
  263. is the maximum that it can be, 255.
  264. While the screen is 320, they say dots
  265. for their illustration of a 320 dot
  266. wide screen and 255 dots for the
  267. direction.
  268.  
  269.  We know it can move across the
  270. screen, as we have seen it in
  271. programmes. How is it done then? Back
  272. to that registers and description
  273. chart; register 16 is the Most
  274. Significant Bit <MSB> and it appears
  275. that it is for the X or horizontal
  276. coordinate. What we do is poke the
  277. value of the sprite into the memory at
  278. this position of 16, doing that for
  279. sprite #2, it would read pokev+16,4.
  280. That will take it past the 255
  281. location on the screen and move it
  282. from 256 to the 320 location.
  283.  
  284.  We will have the programme in just a
  285. moment, What I want to present at this
  286. point is the fact that there are only
  287. 64 spaces on the horizontal that the
  288. sprite needs to move all the way
  289. across the screen. Keeping that in
  290. mind, lets do the programme. First off
  291. this program is only for one balloon.
  292. Pretty much keep just the DATA
  293. statements from your previous balloon
  294. work, Kill off the other lines and
  295. then type in the following.
  296.  
  297. 10 v=53248:pOv+21,4:pO2042,13
  298. 20 forn=0to62:readq:poke832+n,q:next
  299. 25 pOv+5,100
  300. 30 forx=0to255
  301. 40 pOv+4,x
  302. 50 next
  303. 60 pOv+16,4
  304. 70 forx=0to63
  305. 80 pOv+4,x
  306. 90 next
  307. 100 pOv+16,0
  308. 110 goto30
  309.  
  310.  Line 10 is a tad bit different, sure
  311. we have the turn on the chip with the
  312. variable v, then followed by the
  313. turning on the sprite and the sprite
  314. being the 2nd one <value of 4
  315. remember>. Next we poke into the
  316. sprite our data values. What is new
  317. then? Well you have used all those
  318. commands on one line. Using that :
  319. symbol to separate different commands
  320. on one line, rather than write a mess
  321. of separate code lines.
  322.  
  323. line or 20. Has that part that reads
  324. all 63 parts of the sprite, doing that
  325. 0 to 62 bit for Q with the READ
  326. command. Line 25 has the "Y"
  327. coordinate for the sprite, here we see
  328. a 100 rather than the previous "X".
  329. Line 30 has the "X" But see that it is
  330. 0-255, line 40 we have the semi
  331. familiar poke for the second sprite
  332. and the horizontal coordinate. Note
  333. that it is "X" and that is generated
  334. in line 30 for 0 to 255.
  335.  
  336.  Pretty much what we have done
  337. already, line 50 is a next and must be
  338. for that for in line 30. line 60 we
  339. have something new, pokev+16,4. That
  340. one is for making the MSB or Most
  341. Significant Bit trip. Poked that into
  342. the v variable and that, 4 is the
  343. value for the second sprite, the one
  344. that has been working for us through
  345. out the prg.
  346.  
  347. Line 70 is the rest of what we read
  348. about just a little bit ago, Here we
  349. have for x = 0 to 63. That is the next
  350. 64 spaces on the screen to make it go
  351. all the way to the right hand side of
  352. the screen.
  353.  
  354.  
  355. CONTINUED IN PART 2
  356.  
  357.  
  358.